package cms.api;

import cms.model.AreaAddress;
import cms.model.CityAddress;
import cms.model.ProvinceAddress;
import cms.model.TownAddress;

import java.util.List;
import java.util.Map;

/**
 * Created by Roney on 2016/11/11.
 */
public interface AddressApi {

    /**
     * 获取全部的省
     * @return
     */
    public List<ProvinceAddress> findAllProvince();

    /**
     * 根据城市国标码 获取市信息
     * @param provCode
     * @return
     */
    public List<CityAddress> findCityAddressList(String provCode);

    /**
     * 根据省ID获取市信息
     * @param provinceAddress
     * @return
     */
    public List<CityAddress> findCityAddressList(ProvinceAddress provinceAddress);

    /**
     * 根据市国标码  获取区信息
     * @param cityCode
     * @return
     */
    public List<AreaAddress> findAreaAddressList(String cityCode);

    /**
     * 根据市  获取区信息
     * @param cityAddress
     * @return
     */
    public List<AreaAddress> findAreaAddressList(CityAddress cityAddress);

    /**
     * 根据区国标码  获取镇信息
     * @param areaCode
     * @return
     */
    public List<TownAddress> findTownAddressList(String areaCode);


    /**
     * 根据区  获取镇信息
     * @param areaAddress
     * @return
     */
    public List<TownAddress> findTownAddressList(AreaAddress areaAddress);

    /**
     * 国标地区代码转换为第三方地区标识
     * @param areaCode 国标地区编码
     * @param level 地区层级， 1-- 省， 2-- 市 3-- 区县， 4--街道（暂不支持）
     * @param trdCodeFeild 第三方地区ID保存的字段(Entity类字段名)
     * @param defaultVal 默认值，如果库中查找不到给出的第三方字段名或无值，则返回该默认值
     * @return
     */
    public String transTotrdCode(String areaCode, Integer level, String trdCodeFeild, String defaultVal);

    /**
     * 国标地区代码转换为第三方地区标识，查询不到数据时返回null
     * @param areaCode 国标地区编码
     * @param level 地区层级， 1-- 省， 2-- 市 3-- 区县， 4--街道（暂不支持）
     * @param trdCodeFeild 第三方地区ID保存的字段(Entity类字段名)
     * @return
     */
    public String transTotrdCode(String areaCode, Integer level, String trdCodeFeild);

    public Map<Integer, String> areaNodeList(String areaCode);

}
